package com.ruoyi.mall.pms.service;

import com.ruoyi.mall.pms.domain.*;
import com.ruoyi.mall.pms.domain.dto.PmsProductDto;

import java.util.List;
import java.util.Map;

/**
 * 商品Service接口
 *
 * @author xuxing
 * @date 2021-02-03
 */
public interface IPmsProductService
{
    /**
     * 查询商品
     *
     * @param id 商品ID
     * @param detail 是否需要详细信息
     * @return 商品
     */
    public PmsProductDto selectPmsProductById(Long id, Boolean detail);

    /**
     * 查询商品列表
     *
     * @param pmsProduct 商品
     * @return 商品集合
     */
    public List<PmsProduct> selectPmsProductList(PmsProduct pmsProduct);

    /**
     * 新增商品
     *
     * @param pmsProduct 商品
     * @param memberPriceList 会员价格
     * @param ladderList 阶梯价格
     * @param fullReductionList 满减价格
     * @param attributeValueList 商品属性
     * @param productSkuList 商品sku
     * @param subjectIds 专题ids
     * @return 结果
     */
    public int insertPmsProduct(PmsProduct pmsProduct, List<PmsMemberPrice> memberPriceList, List<PmsProductLadder> ladderList, List<PmsProductFullReduction> fullReductionList, List<PmsProductAttributeValue> attributeValueList, List<PmsProductSku> productSkuList, List<Long> subjectIds);

    /**
     * 修改商品
     *
     * @param pmsProduct 商品
     * @return 结果
     */
    public int updatePmsProduct(PmsProductDto pmsProductDto);

    /**
     * 批量删除商品
     *
     * @param ids 需要删除的商品ID
     * @return 结果
     */
    public int deletePmsProductByIds(Long[] ids);

    /**
     * 删除商品信息
     *
     * @param id 商品ID
     * @return 结果
     */
    public int deletePmsProductById(Long id);

    /**
     * 修改商品状态
     *
     * @param map 参数
     * @return 结果
     */
    public int updatePmsProductStatus(Map<String, Integer> map);
}
